指针没用好,一行代码让公司损失6000万美元
问题所在
1 while (ring receive buffer not empty
and side buffer not empty):
2 Initialize pointer to first message in side buffer
or ring receive buffer
3 get copy of buffer
4 switch (message):
5 case (incoming_message):
6 if (sending switch is out of service):
7 if (ring write buffer is empty):
8 send "in service" to status map
9 else:
10 break // The error was here!
END IF
11 process incoming message, set up pointers to
optional parameters
12 break
END SWITCH
13 do optional parameter work
问题分析
如果环写入缓冲区不是空的,那么第 7 行的 `if` 语句就会被跳过,取而代之的是第 10 行的中断语句。
然而,为了使程序正常运行,本应执行第 11 行。
当中断语句被执行,而不是处理传入的信息并为可选参数设置指针时,数据(本应保留的指针)就会被覆盖
纠错软件识别出数据被覆盖,并启动关闭开关进行重置。由于网络中的所有交换机都使用了这种有缺陷的软件,导致了连锁重置反应,最终瘫痪了整个网络系统,使问题变得更加复杂。
尽管进行了严格的测试,网络的设计也非常灵活,但一行代码还是导致了半个国家的主要通信线路瘫痪。
修复
工程师们花了 9 个小时才使 AT&T 的系统完全恢复正常。他们主要是通过将交换机回滚到之前的代码工作版本来实现的。
实际上,软件工程师花了两周时间进行严格的代码阅读、测试和复制,才真正弄清了错误所在。
结论
对于 AT&T 来说,不幸的是,这还不是他们 90 年代最大的系统崩溃。在这十年的后期,他们还遇到了更多的问题。
今天的公司拥有更好的流程,但即便如此,还是会有漏洞漏网。谷歌撰写了一篇关于网站可靠性工程 20 年的精彩回顾文章,其中对 2016 年 YouTube 的首次全球故障进行了反思。
对于公司来说,故障的规模是巨大的,每次故障都会给我们带来教训。然而,对于大多数公司来说,故障归根结底是人为错误和流程漏洞造成的。
原文:https://engineercodex.substack.com/p/how-one-line-of-code-caused-a-60
转自:https://www.jdon.com/69737.htm
今日送书福利
《巧用ChatGPT高效搞定Excel数据分析》本书以Excel 2021办公软件为操作平台,创新地借助当下最热门的AI工具——ChatGPT,来学习Excel数据处理与数据分析的相关方法、技巧及实战应用,同时也向读者分享在ChatGPT的帮助下进行数据分析的思路和经验。
《从概念到现实:chatgpt和midjourney的设计之旅》本书详细介绍了ChatGPT与Midjourney的使用方法和应用场景,并结合设计案例讲解了如何利用AIGC辅助不同行业的设计师提升工作效率和创造力,共涉及8个应用领域,近60个案例演示,生动展示了各行各业中融入AIGC技术的设计成果,为设计师提供了更开阔的设计思路。分享一下你喜欢以上书籍中的哪一本,以及平时工作学习积累的经验,或者分享关于这篇推文内容的个人理解,活动截止时会选出5名小锦鲤,中奖者可以获得上面的纸质书籍任选1本,免费包邮到家。
活动截止时间:2023年11月18日 16:00 整兑奖截止时间:2023年11月19日 16:00 整